In the case of recording a signal to a recording medium such as a magnetic disk or an optical disc in a recording apparatus, the recording is done after performing modulation encoding in advance so that amplitude control of a read signal and clock recovery operate properly at the time of reproduction. Then, for reproduction in such a case, for example, a reproduction method such as PRML (Partial Response Maximum-Likelihood) is employed. PRML is a reproduction method that reproduces the original waveform by taking into consideration such media property that a reproduced signal is affected by the immediately previous signal, and reads the most likely data from the reproduced signal on the basis of the characteristics of a recorded signal.
When errors are contained in the reproduced signal, the errors can be corrected by an error correcting code. It should be noted, however, that if burst errors have occurred in the reproduced signal, the rate of error correction using the error correcting code becomes lower, and hence it is desirable to scatter the burst errors prior to decoding.
For burst errors on optical discs, two kinds of causes are conceivable. One of the causes is that errors that are random at the time of reading become a short burst error of about several bits due to error propagation in PRML, Viterbi decoding, or the like. The other cause is that reading fails due to scratches, dust, or the like on a disc, resulting in a long burst error of about 1000 bits.
A scheme called product code exists as a scheme for dealing with these burst errors. Product code is a scheme which performs error correction by two kinds of code, and is used in cases where some decoding delay is tolerated and, further, a desired performance cannot be attained with a single code. Also, product code is a scheme which can provide a powerful error correction capability with relatively simple hardware, and is adopted as an error correction scheme for CD-ROM (Compact Disc Read Only Memory) and DVD (Digital Versatile Disc) (see, for example, PTL 1).
FIG. 1 represents an example of the data configuration of a product code. The product code is made up of user data, the parity of the outer code, the parity of the inner code, and the parity of the parity (of the outer code).
In the product code illustrated in FIG. 1, encoding of the inner code is performed after encoding of the outer code is performed. That is, encoding of the outer code is performed in the row direction from top to bottom in the drawing, as indicated by the down-arrow representing the encoding direction of the outer code. As a result, in the product code, the parity of the outer code is added below the user data. Thereafter, encoding of the inner code is performed in the column direction from left to right in the drawing, as indicated by the rightward arrow representing the encoding direction of the inner code. As a result, in the product code, the parity of the parity is added to the right of the parity of the outer code.
Decoding of the product code configured in this way first begins with decoding of the inner code that is the first kind of code. Even if decoding of the inner code fails, the resulting error is scattered over a plurality of codewords of the outer code that is the second kind of code. Therefore, even in the case of a long burst error, the burst error can be corrected as a random error with respect to the outer code.
Here, as error correcting codes for performing bit-wise decoding, there are a turbo code, an LDPC (Low Density Parity Check) code, and the like as high-performance error correcting codes whose implementation has progressed for applications such as communication and broadcasting. Use of these codes can provide a large coding gain, thus enabling high quality transmission.
As an error correcting code for performing symbol-wise decoding, there are an RS (Reed-Solomon) code and the like. An RS(n, k) code (n: code length, k: information length) that encodes k symbols into n symbols is capable of correcting errors up to the number of corrections (n−k)/2 symbols by bounded distance decoding.
Therefore, in the case where an error correcting code for performing bit-wise decoding is used as the inner code of the product code, and an error correcting code for performing symbol-wise decoding is used as the outer code, error-free is achieved by reducing the number of errors after decoding of the inner code to be equal to or less than the number of corrections of the outer code. This enables very powerful error correction.
A channel interleaver is used to change burst errors into random errors prior to decoding of each of these codes to thereby enhance the probability of decoding.
FIG. 2 represents an example of interleaving by an interleaver according to the related art, and an example of deinterleaving performed in correspondence to the interleaving. It should be noted that A of FIG. 2 represents an example of interleaving. B of FIG. 2 represents an example of deinterleaving in the case where a short burst error has occurred after interleaving in A of FIG. 2. C of FIG. 2 represents an example of deinterleaving in the case where a long burst error has occurred after interleaving in A of FIG. 2.
In the example in A of FIG. 2, for the convenience of description, the bits prior to interleaving are grouped into blocks of 8 bits, and the blocks are respectively referred to as A-block, B-block, C-block, D-block, and so on, in order from the beginning (left). Likewise, the bits after interleaving are grouped into blocks of 8 bits, and the blocks are respectively referred to as a-block, b-block, c-block, d-block, and so on, in order from the beginning (left).
For example, the channel interleaver performs interleaving so that the first bit of the A-block, the first bit of the B-block, the first bit of the C-block, and the first bit of the D-block prior to interleaving become the first to fourth bits of the a-block, respectively. The channel interleaver performs interleaving so that the second bit of the A-block, the second bit of the B-block, the second bit of the C-block, and the second bit of the D-block prior to interleaving become the first to fourth bits of the b-block, respectively.
On the other hand, deinterleaving is rearranging in the direction opposite to this interleaving. That is, the first to fourth bits of the first of the a-block are deinterleaved so as to become the first bit of the A-block, the first bit of the B-block, the first bit of the C-block, and the first bit of the D-block, respectively.
Thus, as illustrated in B of FIG. 2, even if a short burst error has occurred in the first to sixth bits after interleaving, after deinterleaving, the first to sixth bits in which the short burst error has occurred are each rearranged in its original position, and scattered. Therefore, the error can be changed into a random error with respect to the outer code for performing decoding in units of blocks.
However, as illustrated in C of FIG. 2, in the case where a long burst error has occurred after interleaving (35 bits in the case of the example in C of FIG. 2), the error remains to be a long burst error even after deinterleaving, and it is difficult to change the error into a random error with respect to the outer code. Therefore, in the case where a long burst error has occurred, there is a high possibility that error correction by the inner code fails, and hence there is a need for a channel interleaver that changes a long burst error into a random error with respect to the inner code as much as possible.
On the other hand, there also exists a channel interleaver that scatters a long burst error only with respect to the inner code.
FIG. 3 represents an example of interleaving by a channel interleaver that scatters a long burst error only with respect to the inner code, and deinterleaving corresponding to the interleaving.
The product code in the example in FIG. 3 is made up of the first to fifth pieces of the inner code, and each piece of the inner code has a code length of 35 bits. In FIG. 3, in order from the top, the product code prior to interleaving, the product code after interleaving, the product code after interleaving in the case where a long burst error has occurred, and the product code after deinterleaving in the case where a long burst error has occurred are illustrated.
In the product code prior to interleaving, the circle marks illustrated in the first inner code represent bits of the first inner code, and the × marks illustrated in the second inner code represent bits of the second inner code. Likewise, the upward-pointing triangle marks illustrated in the third inner code represent bits of the third inner code, the square marks illustrated in the fourth inner code represent bits of the fourth inner code, and the downward-pointing triangle marks illustrated in the fifth inner code represent bits of the fifth inner code.
As indicated by the solid arrows representing the input direction, the channel interleaver in FIG. 3 inputs the bits of the first inner code in order from the left to a buffer to accumulate the bits, and then inputs the bits of the second inner code in order from the left to the buffer to accumulate the bits. Thereafter, likewise, with respect to the third to fifth pieces of the inner code, the channel interleaver inputs bits in order from the left to the buffer to accumulate the bits.
Then, the channel interleaver outputs bits in the order indicated by the dashed arrows representing the output direction. That is, the channel interleaver outputs the bit at the beginning of each of the first to fifth pieces of the inner code in order, and then outputs the second bit from the beginning of each of the first to fifth pieces of the inner code in order, and outputs the third bit from the beginning of each of the first to fifth pieces of the inner code in order. Thereafter, likewise, the fourth to thirty-fifth bits from the beginning of each of the first to fifth pieces of the inner code are outputted in order.
Interleaving is performed in the above-described manner, and as a result, the bits are rearranged as illustrated in the interleaved product code. However, suppose that, after interleaving is performed, as indicated by E, a long burst error has occurred during the period from the bit at the beginning to the thirty-first bit on the top row.
In this case, when deinterleaving corresponding to the interleaving mentioned above is performed, as illustrated in the deinterleaved product code, the burst error can be scattered to some extent with respect to the first to fifth pieces of the inner code. However, on the first to fifth columns from the left, the burst distribution becomes tightly clustered in the row direction from top to bottom.
That is, with the method of interleaving in FIG. 3, although it is possible to scatter a long burst error to some extent only with respect to the inner code, it is not possible to scatter the burst error with respect to the outer code for performing decoding in the row direction from top to bottom. For this reason, the error becomes a burst error with respect to the outer code, which increases the probability of failure of error correction by the outer code.
Therefore, there is a need for an interleaver which can change a short burst error into a random error prior to decoding of the inner code, and change a long burst error into a random error as much as possible prior to decoding of the inner code, so that even if error correction by the inner code fails, the error can be treated as a random error with respect to the outer code.
Citation List
Patent Literature
PTL 1: Japanese Unexamined Patent Application Publication No. 2007-149340